
export type RouterType = {
    path?: string
    children?: any[]
    type: 'router'
    plugings?: any[]
}

/**
 * 解析路由
 * @param path 路由路径
 * @param handler 路由处理器 - 路由处理器可以是一个函数，也可以是一个对象，对象必须包含handle方法，还可以是函数数组
 * @param plugings 路由插件
 * @returns
 */
export default (path = '/', handler: any, plugings = []) : RouterType => {
    if(Array.isArray(handler) && handler.length>0) {
         return {
             path,
             children: handler,
             type: 'router',
             plugings
         }
    }
    if(typeof handler === 'function') {
        return {
            path,
            children: [handler],
            type: 'router',
            plugings
        }
    }
    if(typeof handler === 'object' && handler.handle) {
        return {
            path,
            children: [handler],
            type: 'router',
            plugings
        }
    }
    throw new Error('Router必须有handler参数，且参数类型为Route数组或者http request处理函数!');
}